/********************************************************************************
* @author: Ternura_xiang
* @email: 2022101883@nit.edu.cn
* @date: Apr 5, 2025
* @version: 1.0
* @description: 显示函数
********************************************************************************/
#ifndef __DISPLAY_H__
#define __DISPLAY_H__

#include "main.h"
#include "st7789.h"
#include <stdio.h>


/*-------------常量定义-------------*/
#define MODE_NUM 4      // 共有几种模式(DISPLAY_MODE的最大值)

/*-------------枚举定义-------------*/
typedef enum{
    DISPLAY_MODE_MAIN = 0,
    DISPLAY_MODE_THRESHOLD,
    DISPLAY_MODE_ADC,
    DISPLAY_MODE_PWM,
    DISPLAY_MODE_SETTING
}DISPLAY_MODE;

typedef enum{
    THRESHOLD_MODE_L = 0,
    THRESHOLD_MODE_A,
    THRESHOLD_MODE_B
}THRESHOLD_MODE;

typedef enum{
    PWM_SELECT_FREQ = 1,    // 这里设置为一是方便限位
    PWM_SELECT_PWM1,
    PWM_SELECT_DUTY1,
    PWM_SELECT_PWM2,
    PWM_SELECT_DUTY2
}PWM_SELECT;


/*-----------全局变量声明-----------*/
extern DISPLAY_MODE display_mode;  // 显示界面
extern uint8_t display_mode_change_flag; // 显示界面更新标志位
extern DISPLAY_MODE display_mode_select_last;  // 主界面下，上次选择的界面
extern DISPLAY_MODE display_mode_select_now;   // 主界面下，本次选择的界面
extern THRESHOLD_MODE threshold_mode;  // 阈值界面下，正在调整的阈值的界面
extern PWM_SELECT pwm_select_last, pwm_select_now;  // PWM界面下，设置的项目
extern uint8_t pwm1_mode, pwm2_mode; // PWM开关标志
extern uint8_t pwm_change;   // PWM更改标志(该位为1，PWM值可以更改，否则为选择需要更改的值)
extern uint8_t pwm_mode_change_flag; // PWM界面下，PWM开关状态更新标志
extern uint8_t pwm_duty_change_flag; // PWM界面下，PWM占空比状态更新标志
extern uint8_t pwm_freq_change_flag; // PWM界面下，PWM频率状态更新标志
extern uint8_t pwm_duty1, pwm_duty2; // PWM界面下，PWM的占空比值
extern uint8_t pwm_duty_change_num;  // PWM界面下，调整的占空比位(0->十位, 1->个位)

/*-------------函数声明-------------*/
void Display_Init(void);
void Display_Process(void);

#endif // __DISPLAY_H__
